java中的Double型加减乘除 - 点点滴滴的积累 - ITeye技术网站

创建时间:2015/12/21 13:34
标签:1
来源:http://gigixin.iteye.com/blog/670619


Java代码  收藏代码
  1. import java.math.BigDecimal;  
  2.   
  3. public class Arith {  
  4. private static final int DEF_DIV_SCALE = 10;  
  5.   
  6. /** 
  7. * * 两个Double数相加 * 
  8.  
  9. * @param v1 * 
  10. * @param v2 * 
  11. * @return Double 
  12. */  
  13. public static Double add(Double v1, Double v2) {  
  14.    BigDecimal b1 = new BigDecimal(v1.toString());  
  15.    BigDecimal b2 = new BigDecimal(v2.toString());  
  16.    return new Double(b1.add(b2).doubleValue());  
  17. }  
  18.   
  19. /** 
  20. * * 两个Double数相减 * 
  21.  
  22. * @param v1 * 
  23. * @param v2 * 
  24. * @return Double 
  25. */  
  26. public static Double sub(Double v1, Double v2) {  
  27.    BigDecimal b1 = new BigDecimal(v1.toString());  
  28.    BigDecimal b2 = new BigDecimal(v2.toString());  
  29.    return new Double(b1.subtract(b2).doubleValue());  
  30. }  
  31.   
  32. /** 
  33. * * 两个Double数相乘 * 
  34.  
  35. * @param v1 * 
  36. * @param v2 * 
  37. * @return Double 
  38. */  
  39. public static Double mul(Double v1, Double v2) {  
  40.    BigDecimal b1 = new BigDecimal(v1.toString());  
  41.    BigDecimal b2 = new BigDecimal(v2.toString());  
  42.    return new Double(b1.multiply(b2).doubleValue());  
  43. }  
  44.   
  45. /** 
  46. * * 两个Double数相除 * 
  47.  
  48. * @param v1 * 
  49. * @param v2 * 
  50. * @return Double 
  51. */  
  52. public static Double div(Double v1, Double v2) {  
  53.    BigDecimal b1 = new BigDecimal(v1.toString());  
  54.    BigDecimal b2 = new BigDecimal(v2.toString());  
  55.    return new Double(b1.divide(b2, DEF_DIV_SCALE, BigDecimal.ROUND_HALF_UP)  
  56.      .doubleValue());  
  57. }  
  58.   
  59. /** 
  60. * * 两个Double数相除,并保留scale位小数 * 
  61.  
  62. * @param v1 * 
  63. * @param v2 * 
  64. * @param scale * 
  65. * @return Double 
  66. */  
  67. public static Double div(Double v1, Double v2, int scale) {  
  68.    if (scale < 0) {  
  69.     throw new IllegalArgumentException(  
  70.       "The scale must be a positive integer or zero");  
  71.    }  
  72.    BigDecimal b1 = new BigDecimal(v1.toString());  
  73.    BigDecimal b2 = new BigDecimal(v2.toString());  
  74.    return new Double(b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue());  
  75. }  
  76. }